/**cookie */
// Cookie是一种在Web浏览器中存储小量数据的机制，用于在客户端和服务器之间传递数据。Cookie通常用于存储用户身份验证信息、购物车信息、偏好设置等。

// Cookie的格式如下：
// Cookie: name=value; expires=date; path=path; domain=domain; secure; httpOnly; SameSite

// 其中，name表示Cookie的名称，value表示Cookie的值，expires表示Cookie的过期时间，path表示Cookie的路径，domain表示Cookie的域名，secure表示Cookie是否只在HTTPS连接中发送，
// httpOnly表示Cookie是否只在客户端中访问，SameSite表示Cookie的SameSite属性。

// 在Web浏览器中，可以使用JavaScript的document.cookie属性来读取和写入Cookie。例如：

// 写入Cookie
document.cookie = 'username=John Doe; expires=Thu, 18 Dec 2022 12:00:00 UTC; path=/; domain=.example.com; secure; httpOnly; SameSite=Lax';

// 读取Cookie
const cookies = document.cookie.split(';');
for (let i = 0; i < cookies.length; i++) {
    const cookie = cookies[i].trim();
    if (cookie.indexOf('username=') === 0) {
        const username = cookie.substring('username='.length);
        console.log(username); // 输出 John Doe
    }
}

// 在上面的代码中，使用document.cookie属性写入了一个名为username的Cookie，并设置了过期时间、路径、域名、secure、httpOnly和SameSite属性。
// 使用split()方法将Cookie字符串分割成多个Cookie，然后使用for循环遍历每个Cookie，判断Cookie的名称是否为username，如果是，则读取Cookie的值。


/**子cookie */
// 子Cookie是一种将数据存储在Cookie中的机制，它可以将多个键值对存储在一个Cookie中，每个键值对之间使用分号和空格分隔。子Cookie的格式如下：
// Cookie: name=value; expires=date; path=path; domain=domain; secure; httpOnly; SameSite=Strict; subcookie1=subvalue1; subcookie2=subvalue2;...
// 其中，name表示Cookie的名称，value表示Cookie的值，expires表示Cookie的过期时间
// ，path表示Cookie的路径，domain表示Cookie的域名，secure表示Cookie是否只在HTTPS连接中发送，
// httpOnly表示Cookie是否只在客户端中访问，SameSite表示Cookie的SameSite属性，subcookie1、subcookie2等表示子Cookie的名称和值。
// 在Web浏览器中，可以使用JavaScript的document.cookie属性来读取和写入子Cookie。例如：
// 写入子Cookie
document.cookie = 'cart=item1; expires=Thu, 18 Dec 2022 12:00:00 UTC; path=/; domain=.example.com; secure; httpOnly; SameSite=Strict; subcookie1=value1; subcookie2=value2';
// 读取子Cookie
const cookies1 = document.cookie.split(';');
let cartCookie = null;
for (let i = 0; i < cookies1.length; i++) {
    const cookie1 = cookies1[i].trim();
    if (cookie1.indexOf('cart=') === 0) {
        cartCookie = cookie1;
        break;
    }
}
if (cartCookie) {
    const subcookies = cartCookie.split('; ');
    for (let i = 0; i < subcookies.length; i++) {
        const subcookie = subcookies[i].split('=');
        console.log(subcookie[0], subcookie[1]); // 输出 subcookie1 value1 subcookie2 value2
    }
}

// 在上面的代码中，使用document.cookie属性写入了一个名为cart的Cookie，并设置了过期时间、路径、域名、secure、httpOnly和SameSite属性，
// 同时还存储了两个子Cookie。使用split()方法将Cookie字符串分割成多个Cookie，然后使用for循环遍历每个Cookie，判断Cookie的名称是否为cart，如果是，则读取子Cookie的值。